package interfaces;

import java.util.Date;
import java.util.List;

/**
 * @author Manseer Marcel  
 * @author Plavsic Maja
 * @author Pretsch Paul
 */
public interface DataBuffer {
	
	/**
	 * @param tag
	 * @param date
	 * @return setter for specific tag and date
	 */
	public TagDataSetter getDataSetter(String tag, Date date);
	
	/**
	 * @param tag
	 * @param date
	 * @return setter for specific tag and date, is null if already exists
	 */
	public TagDataSetter getNewDataSetter(String tag, Date date);
	
	/**
	 * @param date
	 * @param tags
	 * @return list of TagDataGetter for a specific date and tags
	 */
	public List<TagDataGetter> getTwitterData(Date date, String... tags);
	
	/**
	 * @param from begin of time span
	 * @param to end of time span
	 * @param tags
	 * @return list of TagDataGetter for a specific time span and tags
	 */
	public List<TagDataGetter> getTwitterData(Date from, Date to, String... tags);

	public void addTagDataChangedListener(TagDataChangedListener listener);
	
	public void fireTagDataChanged(TagDataGetter tagData, int oldCount);

	public void removeData(Date date, String hashtag);
}
